/**
 * 
 */
package com.vivid.dynamics.oknow.config.spring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.vivid.dynamics.oknow.dao.IBookmarkDAO;
import com.vivid.dynamics.oknow.dao.IGroupDAO;
import com.vivid.dynamics.oknow.dao.IPermissionDAO;
import com.vivid.dynamics.oknow.dao.IUserCategoryDAO;
import com.vivid.dynamics.oknow.dao.IUserDAO;
import com.vivid.dynamics.oknow.dao.IUserThemeDAO;
import com.vivid.dynamics.oknow.dao.impl.BookmarkDAOImpl;
import com.vivid.dynamics.oknow.dao.impl.GroupDAOImpl;
import com.vivid.dynamics.oknow.dao.impl.PermissionDAOImpl;
import com.vivid.dynamics.oknow.dao.impl.UserCategoryDAOImpl;
import com.vivid.dynamics.oknow.dao.impl.UserDAOImpl;
import com.vivid.dynamics.oknow.dao.impl.UserThemeDAOImpl;

/**
 * The Bean-Factory: declaring all sorts of Beans to be managed by 
 *	Spring Framework.
 *
 *	@see http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-java
 *
 * @author jason
 * created at:: Jul 28, 2011 11:55:26 AM
 */
@Configuration
public class BeansDefinator {

	/* *********************** */
	/* *      DAO beans      * */
	/* *********************** */
	
	/**
	 * create an instance of GroupDAOImpl.
	 * 
	 * @return
	 * @author jason
	 * created at:: Jul 28, 2011  2:53:58 PM
	 */
	@Bean
	public IGroupDAO groupDAO() {
		return new GroupDAOImpl();
	}
	
	/**
	 * create an instance of UserDAOImpl.
	 * @return
	 * @author jason
	 * created at:: Jul 29, 2011  11:36:28 AM
	 */
	@Bean
	public IUserDAO userDAO() {
		return new UserDAOImpl();
	}
	
	/**
	 * create an instance of UserThemeDAOImpl
	 * @return
	 * @author jason
	 * created at:: Aug 3, 2011  3:42:08 PM
	 */
	@Bean
	public IUserThemeDAO userThemeDAO() {
		return new UserThemeDAOImpl();
	}
	
	/**
	 * create an instance of BookmarkDAOImpl
	 * @return
	 * @author jason
	 * created at:: Aug 4, 2011  3:35:22 PM
	 */
	@Bean
	public IBookmarkDAO bookmarkDAO() {
		return new BookmarkDAOImpl();
	}
	
	/**
	 * create an instance of PermissionDAOImpl
	 * @return
	 * @author jason
	 * created at:: Aug 5, 2011  11:34:33 AM
	 */
	@Bean
	public IPermissionDAO permissionDAO() {
		return new PermissionDAOImpl();
	}
	
	/**
	 * create an instance of UserCategoryDAOImpl
	 * @return
	 * @author jason
	 * created at:: Aug 12, 2011  4:00:23 PM
	 */
	@Bean
	public IUserCategoryDAO userCategoryDAO() {
		return new UserCategoryDAOImpl();
	}
	
}
